<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
 <head>
  <meta http-equiv="content-type" content="text/html; charset=UTF-8">
  <title>转移上一次查询返回的结果集</title>
<link media="all" rel="stylesheet" type="text/css" href="styles/03e73060321a0a848018724a6c83de7f-theme-base.css" />
<link media="all" rel="stylesheet" type="text/css" href="styles/03e73060321a0a848018724a6c83de7f-theme-medium.css" />

 </head>
 <body class="docs"><div class="navbar navbar-fixed-top">
  <div class="navbar-inner clearfix">
    <ul class="nav" style="width: 100%">
      <li style="float: left;"><a href="mysqli.stmt-init.html">« mysqli::stmt_init</a></li>
      <li style="float: right;"><a href="mysqli.thread-id.html">mysqli::$thread_id »</a></li>
    </ul>
  </div>
</div>
<div id="breadcrumbs" class="clearfix">
  <ul class="breadcrumbs-container">
    <li><a href="index.html">PHP Manual</a></li>
    <li><a href="class.mysqli.html">MySQLi</a></li>
    <li>转移上一次查询返回的结果集</li>
  </ul>
</div>
<div id="layout">
  <div id="layout-content"><div id="mysqli.store-result" class="refentry">
 <div class="refnamediv">
  <h1 class="refname">mysqli::store_result</h1>
  <h1 class="refname">mysqli_store_result</h1>
  <p class="verinfo">(PHP 5, PHP 7, PHP 8)</p><p class="refpurpose"><span class="refname">mysqli::store_result</span> -- <span class="refname">mysqli_store_result</span> &mdash; <span class="dc-title">转移上一次查询返回的结果集</span></p>

 </div>

 <div class="refsect1 description" id="refsect1-mysqli.store-result-description">
  <h3 class="title">说明</h3>
  <p class="para">面向对象风格</p>
  <div class="methodsynopsis dc-description">
   <span class="methodname"><strong>mysqli::store_result</strong></span>(<span class="methodparam"><span class="type">int</span> <code class="parameter">$option</code><span class="initializer"> = ?</span></span>): <span class="type"><a href="class.mysqli-result.html" class="type mysqli_result">mysqli_result</a></span></div>

  <p class="para rdfs-comment">过程化风格</p>
  <div class="methodsynopsis dc-description"><span class="methodname"><strong>mysqli_store_result</strong></span>(<span class="methodparam"><span class="type"><a href="class.mysqli.html" class="type mysqli">mysqli</a></span> <code class="parameter">$link</code></span>, <span class="methodparam"><span class="type">int</span> <code class="parameter">$option</code><span class="initializer"> = ?</span></span>): <span class="type"><a href="class.mysqli-result.html" class="type mysqli_result">mysqli_result</a></span></div>

  <p class="para rdfs-comment">
   迁移 <code class="parameter">link</code> 参数所指定的连接上的上一次查询返回的结果集，
   迁移之后的结果集可以
   在 <span class="function"><a href="mysqli-result.data-seek.html" class="function">mysqli_data_seek()</a></span> 函数中使用。
  </p>
 </div>


 <div class="refsect1 parameters" id="refsect1-mysqli.store-result-parameters">
  <h3 class="title">参数</h3>
  <p class="para">
   <dl>
   <dt>

<code class="parameter">mysql</code></dt>
<dd>
<p class="para">仅以过程化样式：由<span class="function"><a href="function.mysqli-connect.html" class="function">mysqli_connect()</a></span> 或 <span class="function"><a href="mysqli.init.html" class="function">mysqli_init()</a></span>
返回的 <span class="classname"><a href="class.mysqli.html" class="classname">mysqli</a></span> 对象。</p></dd>

   
     <dt>
<code class="parameter">option</code></dt>

     <dd>

      <p class="para">
       指定的选项，可以是下列中的某一值：
       <table class="doctable table">
        <caption><strong>Valid options</strong></caption>
        
         <thead>
          <tr>
           <th>Name</th>
           <th>Description</th>
          </tr>

         </thead>

         <tbody class="tbody">
          <tr>
           <td><strong><code>MYSQLI_STORE_RESULT_COPY_DATA</code></strong></td>
           <td>将结果集从 mysqlnd 的内部缓冲区复制到 PHP 变量中。
            默认情况下，mysqlnd 采取一种引用策略尽量避免在内容中复制多份同样的结果集。
            例如，对于一个包含了很多行的结果集，每个行中的内容又不是很大，那么复制结果集的过程会导致内存使用率下降，
            因为用来保存结果集数据的 PHP 变量可能提前被释放掉。
            （此选项仅在使用 mysqlnd 驱动且 PHP 5.6.0 之后可用）。</td>
          </tr>

         </tbody>
        
       </table>

      </p>
     </dd>

    
   </dl>

  </p>
 </div>


 <div class="refsect1 returnvalues" id="refsect1-mysqli.store-result-returnvalues">
  <h3 class="title">返回值</h3>
  <p class="para">
   成功则返回一个缓冲的结果集对象，失败则返回 <strong><code>false</code></strong>。
  </p>
  <blockquote class="note"><p><strong class="note">注意</strong>: 
   <p class="para">
    如果上一查询并不产生结果集（例如，执行了一个 INSERT 语句），
    那么 <span class="function"><strong>mysqli_store_result()</strong></span> 会返回 <strong><code>false</code></strong>。
    如果读取结果集失败了，也会返回 <strong><code>false</code></strong>。
    如何区分是上面哪种情况导致此函数的调用返回了 <strong><code>false</code></strong>？
    你可以通过下面的方法来检测：
    <span class="function"><a href="mysqli.error.html" class="function">mysqli_error()</a></span> 返回了非空的字符串，
    <span class="function"><a href="mysqli.errno.html" class="function">mysqli_errno()</a></span> 返回了非零值，
    或者 <span class="function"><a href="mysqli.field-count.html" class="function">mysqli_field_count()</a></span> 返回了非零值，
    都表示发生错误了。
    还有一种可能的情况会导致此函数的调用返回 <strong><code>false</code></strong>：上一次查询 <span class="function"><a href="mysqli.query.html" class="function">mysqli_query()</a></span> 本身是成功的，
    但是由于返回的结果集太大，无法为其分配足够的内存来进行结果集转移。
    如果 <span class="function"><a href="mysqli.field-count.html" class="function">mysqli_field_count()</a></span> 函数返回了一个非零值，那么表示 SQL 语句产生了一个非空的结果集。
   </p>
  </p></blockquote>
 </div>


 <div class="refsect1 notes" id="refsect1-mysqli.store-result-notes">
  <h3 class="title">注释</h3>
  <blockquote class="note"><p><strong class="note">注意</strong>: 
   <p class="para">
    执行查询之后，
    使用 <span class="function"><a href="mysqli-result.free.html" class="function">mysqli_free_result()</a></span> 函数来释放结果集所占用的内存，
    是一个很有用的实战经验。
    尤其是当使用 <span class="function"><strong>mysqli_store_result()</strong></span> 函数来转移数量较大的结果集的时候，
    释放结果集内存的操作尤为重要。
   </p>
  </p></blockquote>
 </div>


 <div class="refsect1 examples" id="refsect1-mysqli.store-result-examples">
  <h3 class="title">范例</h3>
  <p class="para">
   See <span class="function"><a href="mysqli.multi-query.html" class="function">mysqli_multi_query()</a></span>.
  </p>
 </div>


 <div class="refsect1 seealso" id="refsect1-mysqli.store-result-seealso">
  <h3 class="title">参见</h3>
  <p class="para">
   <ul class="simplelist">
    <li class="member"><span class="function"><a href="mysqli.real-query.html" class="function" rel="rdfs-seeAlso">mysqli_real_query()</a> - 执行一个mysql查询</span></li>
    <li class="member"><span class="function"><a href="mysqli.use-result.html" class="function" rel="rdfs-seeAlso">mysqli_use_result()</a> - Initiate a result set retrieval</span></li>
   </ul>
  </p>
 </div>


</div></div></div></body></html>